﻿
void _1018()
{
    // 我有100块钱 想买100只鸡
    // 公鸡5块一只 母鸡3块一只 小鸡1块3只
    // 打印出所有买法

    int a;//公鸡
    int b;//母鸡
    int c;//小鸡
          //5*a + 3*b + c/3 *1 == 100
          //a + b + c == 100

    // 整数 / 整数 = 整数（舍弃小数部分）
    // 整数 / 小数 = 小数

    for (a = 0; a < 21; a++)
    {
        for (b = 0; b < 34; b++)
        {
            for (c = 0; c < 101; c++)
            {
                if (5 * a + 3 * b + c / 3 * 1 == 100 && a + b + c == 100 && c % 3 == 0)
                {
                    Console.WriteLine($"公鸡{a}只,母鸡{b}只,小鸡{c}只。");
                }
            }
        }
    }
    Console.WriteLine("----------------------------------------------------------------");
    // 随机一个长度为10的数组 随即范围[0~100] 并打印出来 用逗号隔开
    // 要求输出其中 奇数的个数 能被3整除的数的个数
    int[] arr = new int[10];
    Random random = new Random();
    int d = 0;
    int e = 0;
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i] = random.Next(0, 101);
        Console.Write(arr[i] + ",");
        if (arr[i] % 2 != 0)
        {
            d++;
        }
        if (arr[i] % 3 == 0)
        {
            e++;
        }
    }
    Console.WriteLine($"\n奇数个数为{d},被3整除个数为{e}");
}
//_1018();
void _1019()
{
    // 给定一个[不重复的整数数组] 和 一个[目标值]
    // 要求 在数组中找出[两个整数] 它们的和为目标值
    // 输出这两个数的下标
    int[] arr = { 2, 7, 5, 3, 8, 6 };
    int target = 12;
    // 算法
    for (int i = 0;i < arr.Length-1;i++)
    {
        for (int j = i+1;j < arr.Length;j++)
        {
            if(arr[i] + arr[j] == target)
            {
                Console.WriteLine($"[{i},{j}]");
            }
        }
    }
    // [1,2]
    Console.WriteLine("---------------------------------------");
    // 给定一个[整数] 判断它是否是[回文数]
    // 12321
    int num1 = 12321, num2 = 12345;
    //.1.2321 / 10000
    //1.2.321 % 10000 / 1000
    //12.3.21 % 1000 / 100
    //123.2.1 % 100 / 10
    //1232.1. % 10/ 1
    int num = num2;
    int length = 0;
    int[] arr2;
    bool b = true;
    while(num/10 != 0)
    {
        length++;
        num /= 10;
    }
    arr2 = new int[length + 1];
    num = num2;
    //num.ToString();
    for (int i = 0; i < arr2.Length; i++)
    {
        arr2[i] = num%10;
        num/=10;
    }



    //for (int i = 0;i < arr2.Length; i++)
    //{
    //    if (arr2[i] != arr2[arr2.Length - 1 - i])
    //    {
    //        b = false;
    //    }
    //}

    string str = num1.ToString();
    for (int i = 0; i < str.Length; i++)
    {
        if (str[i] != str[str.Length - 1 - i])
        {
            b = false;
        }
    }
    Console.WriteLine(b);
}
//_1019();
void _1021()
{
    // 给定2个字符串
    // 要求写一个算法 来查找这2个字符串中 最长公共部分并输出
    // sadfadfggsd dsfasfadfgsfsaf
    //string str1 = "sadfadfggsd";
    //string str2 = "dsfasfadfgsfsaf";

    //int p1 = 0, p2 = 0, length = 0;

    //for (int i = 0;i < str1.Length;i++)
    //{
    //    for (int j = 0; j < str2.Length; j++)
    //    {
    //        if (str1[i] == str2[j])
    //        {
    //            p1 = 1;
    //            p2 = j;
    //            length++;
    //            for (int k = 0; k < str1.Length; k++)
    //            {
    //                if (str1[i+k] == str2[j+k])
    //                {
    //                    length++;
    //                }
    //                else
    //                {
    //                    break;
    //                }
    //            }
    //        }
    //    }
    //}
}
_1021();